include "module.thrift"

namespace java com.to8to.thrift.diary.diary
namespace php com.to8to.thrift.diary.diary

    /** ========== 查询日记 ================================================ */
    
struct ListDiariesRequest
{
    /** 查询条件字段 【必填】 可选值:【查询内容】中的字段名 */
    1:list<string> fields 
 
    /** 查询内容 */
    
    /** 根据日记id查找 【选填】 */
    6:list<string> _ids 
    /** 需要排除的现场id 【选填】 */
    7:list<string> exclude_ids 
    /** 日记作者id 【选填】 */
    8:list<string> owner_ids 
    /** 现场id 【选填】 */
    9:list<string> scene_ids 
    /** 根据给定的status过滤 【选填】 */
    10:list<i32> status 
    /** 根据日记大阶段查找 【选填】 */
    11:list<i32> progress_ids 
    /** 根据日记小阶段查找 【选填】 */
    12:list<i32> tag_ids 
    /** 监理id 【选填】 */
    13:list<i32> jianli_ids 
    /** 是否包含监理草稿日记 【选填】 可选值:0-不包含 1-包含；当设置为0时，需要把jianli_id>0 且 status=2(草稿)的日记过滤掉。 */
    14:i32 contains_jianli_draft=0 
    /** 监理日记时，用于表示监理的进度 【选填】 */
    15:list<i32> jianli_stage_id=0 
    /** 过滤结果 【选填】 */
    16:list<i32> filter_result 
    /** 显示产品的细节 【选填】 可选值:0-不显示 1-显示细节 */
    17:i32 with_products_detail=0 
    /** 商品ID 【选填】 */
    18:string product_id 
    /** 19:string loginOwnerId //当前登录用户id */
    
	/** 时间范围 【选填】*/
	28:module.TRange ctime_range 
	
    /** 根据平台筛选 【选填】 可选值:PLATFORM_XXX */
    26:list<i32> platforms 
    /** 发布来源 【选填】 可选值:PUBLISH_DIARY_SOURCE_XXX */
    27:list<i32> publish_sources 
  
    /** 排序字段 【必填】 */
    21:list<module.TSortField> sort 
    /** 【必填】 */
    22:i32 offset=0 
    /** 【必填】 */
    23:i32 limit=10 
    /** 【选填】 前端需要跟踪时设置该字段 */
    30:string trace_tag 
	
	/** 版本控制 参考module.const字段 */ 
	31:double version=2.0
}

struct ListDiariesResponse
{
    /** 响应结果信息 */
    1:string res="succ" 
    /** 本次查询出的日记数量(并不是全部记录的总数) */
    2:i32 total 
    /** 偏移量 */
    3:i32 offset 
    /** 最多查询记录数 */
    4:i32 limit 
    /** 日记结果集 */
    5:list<module.TDiary> results 
    /** 操作耗时 */
    6:i32 timespend 
    /** 产品细节:默认为null，在with_products_detail==1时有值 */
    7:map<string,module.TProduct> prod_map
    /** 前端需要跟踪时设置该字段 */
    10:string trace_tag 
		
}

    /** ========== 创建日记 ================================================ */
    
struct CreateDiaryRequest
{
    /** 【必填】 可选值:见【module.TDiary】中说明 */
    6:module.TDiary diary 
	
	/** user id */
	9:string user_id

	/** 版本控制 参考module.const字段 */ 
	11:double version=2.0
	
    /** 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

    /** ========== 更新日记 ================================================ */
    
struct UpdateDiaryRequest
{
    /** 日记ID 【必填】 */
    1:string _id 
    /** 更新条件字段 【必填】 可选值:【module.TDiary】中的字段名 */
    2:list<string> fields 
    /** 什么角色来更新 【暂时不用，保留】 */
    3:i32 user_type 
    /** 用户ID 【必填】 */
    4:string user_id 
 
    /** 【必填】 可选值:见【module.TDiary】中说明 */
    6:module.TDiary diary 

    /** 是否是用户操作 */
    25:bool is_user_do = true 
	
	/** 版本控制 参考module.const字段 */ 
	11:double version=2.0
	
    /** 【选填】 前端需要跟踪时设置该字段 */
    26:string trace_tag 
	
	/** 是否需要校验user_id和owner_id */
	7:i32 need_validate=0
}

    /** ========== 删除日记 ================================================ */
    
struct DeleteDiaryRequest
{
    /** 要删除的日记id */
    1:list<string> diary_ids 
	
	/** user id */
	9:string user_id
	
	/** 是否需要校验user_id和owner_id */
	7:i32 need_validate=0
	
    /** 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}
